package generadorDeDatos;	

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Random;

import cern.jet.random.Normal;
import cern.jet.random.Poisson;
import cern.jet.random.engine.DRand;
import cern.jet.random.engine.RandomEngine;

public class pruebaVaquillonas {

		public static void main(String[] args) {

			Random rand = new Random();
			RandomEngine engine = new DRand();
			Poisson poisson = new Poisson(0.8, engine);
			
			RandomEngine engine2 = new DRand();
			Normal normal = new Normal(2, 2, engine2);
			
			int existenciaInicialR1 = 120;
			int existenciaFinalR1 = 118;
			
			int existenciaInicialR2 = 145;
			int existenciaFinalR2 = 144;
			
			int existenciaInicialR3 = 234;
			int existenciaFinalR3 = 237;
			
			int existenciaInicialR4 = 302;
			int existenciaFinalR4 = 299;
			
			//cant qe se transfiere, salida
			int transfR1 = 0;
			int transfR2 = 0;
			int transfR3 = 0;
			int transfR4 = 0;
		
			//rodeo al q se transfiere
			int rodeoATransf1 = 0;
			int rodeoATransf2 = 0;
			int rodeoATransf3 = 0;
			int rodeoATransf4 = 0;
			
			//cant transferida, entrada
			int transferidoR1 = 0;
			int transferidoR2 = 0;
			int transferidoR3 = 0;
			int transferidoR4 = 0;
			
			//las entradas son aquellos terneros q crecen y pasan a ser vaquillonas
			//no los restamos de los terneros
			int entradasR1, muertesR1, salidasR1, ventasR1, saldoR1;
			int entradasR2, muertesR2, salidasR2, ventasR2, saldoR2;
			int entradasR3, muertesR3, salidasR3, ventasR3, saldoR3;
			int entradasR4, muertesR4, salidasR4, ventasR4, saldoR4;
			
			List<String> fechas = new ArrayList<String>();
			String DATE_FORMAT = "dd/MM/yyyy";
		    SimpleDateFormat sdf =  new SimpleDateFormat(DATE_FORMAT);
		    Calendar c1 = Calendar.getInstance(); // today
		    c1.set(2011, 0, 1);
		    fechas.add("'"+sdf.format(c1.getTime())+"'");
		    for (int i = 0; i < 365; i++) {
		    	c1.add(Calendar.DATE, 1);
		    	fechas.add("'"+sdf.format(c1.getTime())+"'");
			}
			
			//LOS DATOS INICIALES NO TIENEN TRANSFERENCIA A OTROS RODEOS
			System.out.println("--RODEO DE VAQUILLONAS");
			
			System.out.println("insert into movimientosrodeos values(1, 0, 1, 0, 0, " + transfR1 + ", " + rodeoATransf1 + ")");
			System.out.println("insert into movimientosporrodeo values(1, 1, 1, "+fechas.get(0)+")");
			System.out.println("insert into RodeosDiarios values(1, 1, " + transferidoR1 + ", -2, " + existenciaInicialR1 + ", " + existenciaFinalR1 + ")");
			
			System.out.println("/************************************************************************/");
			
			System.out.println("insert into movimientosrodeos values(2, 0, 1, 0, 0, " + transfR2 + ", " + rodeoATransf2 + ")");
			System.out.println("insert into movimientosporrodeo values(2, 2, 2, "+fechas.get(0)+")");
			System.out.println("insert into RodeosDiarios values(2, 0, " + transferidoR2 + ", -1, " + existenciaInicialR2 + ", " + existenciaFinalR2 + ")");
			
			System.out.println("/************************************************************************/");
			
			System.out.println("insert into movimientosrodeos values(3, 5, 2, 0, 0, " + transfR3 + ", " + rodeoATransf3 + ")");
			System.out.println("insert into movimientosporrodeo values(3, 3, 3, "+fechas.get(0)+")");
			System.out.println("insert into RodeosDiarios values(3, 0, " + transferidoR3 + ", 3, " + existenciaInicialR3 + ", " + existenciaFinalR3 + ")");
			
			System.out.println("/************************************************************************/");
			
			System.out.println("insert into movimientosrodeos values(4, 0, 1, 0, 0, " + transfR4 + ", " + rodeoATransf4 + ")");
			System.out.println("insert into movimientosporrodeo values(4, 4, 4, "+fechas.get(0)+")");
			System.out.println("insert into RodeosDiarios values(4, 2, " + transferidoR4 + ", -3, " + existenciaInicialR4 + ", " + existenciaFinalR4 + ")");
			
			System.out.println("/************************************************************************/");
			
			int i = 5, j=1;
			while(i<=1457){
				
				entradasR1 = Math.abs(normal.nextInt());
				muertesR1 = Math.abs(poisson.nextInt());
				salidasR1 = Math.abs(poisson.nextInt());
				ventasR1 = Math.abs(poisson.nextInt()); 
				transfR1 = Math.abs(poisson.nextInt());
				rodeoATransf1 = rand.nextInt(4);
						
				entradasR2 = Math.abs(normal.nextInt());
				muertesR2 = Math.abs(poisson.nextInt());
				salidasR2 = Math.abs(poisson.nextInt());
				ventasR2 = Math.abs(poisson.nextInt()); 
				transfR2 = Math.abs(poisson.nextInt());
				rodeoATransf2 = rand.nextInt(4);
						
				entradasR3 = Math.abs(normal.nextInt());
				muertesR3 = Math.abs(poisson.nextInt());
				salidasR3 = Math.abs(poisson.nextInt());
				ventasR3 = Math.abs(poisson.nextInt()); 
				transfR3 = Math.abs(poisson.nextInt());
				rodeoATransf3 = rand.nextInt(4);
						
				entradasR4 = Math.abs(normal.nextInt());
				muertesR4 = Math.abs(poisson.nextInt());
				salidasR4 = Math.abs(poisson.nextInt());
				ventasR4 = Math.abs(poisson.nextInt()); 
				transfR4 = Math.abs(poisson.nextInt());
				rodeoATransf4 = rand.nextInt(4);
			
				if (transfR1 == 0 || rodeoATransf1 == 0 || rodeoATransf1 == 1) {
					transfR1 = 0;
					rodeoATransf1 = 0;
				}
				if (transfR2 == 0 || rodeoATransf2 == 0 || rodeoATransf2 == 2) {
					transfR2 = 0;
					rodeoATransf2 = 0;
				}
				if (transfR3 == 0 || rodeoATransf3 == 0 || rodeoATransf3 == 3) {
					transfR3 = 0;
					rodeoATransf3 = 0;
				}
				if (transfR4 == 0 || rodeoATransf4 == 0 || rodeoATransf4 == 4) {
					transfR4 = 0;
					rodeoATransf4 = 0;
				}
					
				if (rodeoATransf1 == 2){
					transferidoR2 += transfR1;
				}
				if (rodeoATransf3 == 2){
					transferidoR2 += transfR3;
				}
				if (rodeoATransf4 == 2){
					transferidoR2 += transfR4;
				}
				if (rodeoATransf1 == 3){
					transferidoR3 += transfR1;
				}
				if (rodeoATransf2 == 3){
					transferidoR3 += transfR2;
				}
				if (rodeoATransf4 == 3){
					transferidoR3 += transfR4;
				}
				if (rodeoATransf1 == 4){
					transferidoR4 += transfR1;
				}
				if (rodeoATransf2 == 4){
					transferidoR4 += transfR2;
				}
				if (rodeoATransf3 == 4){
					transferidoR4 += transfR3;
				}
				if (rodeoATransf2 == 1){
					transferidoR1 += transfR2;
				}
				if (rodeoATransf3 == 1){
					transferidoR1 += transfR3;
				}
				if (rodeoATransf4 == 1){
					transferidoR1 += transfR4;
				}
						
				saldoR1 = entradasR1 - muertesR1 - salidasR1 - ventasR1 - transfR1 + transferidoR2 + transferidoR3 + transferidoR4;
				saldoR2 = entradasR2 - muertesR2 - salidasR2 - ventasR2 - transfR2 + transferidoR1 + transferidoR3 + transferidoR4;
				saldoR3 = entradasR3 - muertesR3 - salidasR3 - ventasR3 - transfR3 + transferidoR1 + transferidoR2 + transferidoR4;
				saldoR4 = entradasR4 - muertesR4 - salidasR4 - ventasR4 - transfR4 + transferidoR1 + transferidoR2 + transferidoR4;
				
				// PARA RODEO NRO 1
				System.out.println("insert into movimientosrodeos values(" + i + ", " + // idMovimiento
					entradasR1 + ", " + 		// nacimientos
					muertesR1 + ", " + 			// muertes
					0 + ", " + 					// abortos
					salidasR1 + ", " + 			// transferencia descarte
					transfR1 + ", " + 			// transferencia a otro rodeo misma categoria
					rodeoATransf1 + 			// rodeo a transferir
				")");

				System.out.println("insert into movimientosporrodeo values(" + 1 + ", " + // idRodeo
					i + ", " + // idMovimiento
					i + ", " + // idMovimientoPorRodeo
					fechas.get(j) + // fecha
				")");

				System.out.println("insert into rodeosdiarios values(" + i + ", " + // idMovimientoPorRodeo
					ventasR1 + ", " + 			// ventas
					transferidoR1 + ", " + 		//cant transferida
					saldoR1 + ", " + 			// saldo
					existenciaFinalR1 + ", " +	// existencia inicial es la exi final del anterior
					(existenciaFinalR1 + saldoR1) + // existencia final mas saldo
				")");

				existenciaFinalR1 = existenciaFinalR1 + saldoR1;
				
				transferidoR1 = 0;
				saldoR1 = 0;

				System.out.println("/************************************************************************/");
				
				// RODEO 2
				i += 1;

				System.out.println("insert into movimientosrodeos values(" + i + ", " + // idMovimiento
					entradasR2 + ", " + // nacimientos
					muertesR2 + ", " + // muertes
					0 + ", " + // abortos
					salidasR2 + ", " + // transferencia descarte
					transfR2 + ", " + // transferencia rodeo
					rodeoATransf2 + 
				")");

				System.out.println("insert into movimientosporrodeo values(" + 2 + ", " + // idRodeo
					i + ", " + // idMovimiento
					i + ", " + // idMovimientoPorRodeo
					fechas.get(j) + // fecha
				")");

				System.out.println("insert into rodeosdiarios values(" + i + ", " + // idMovimientoPorRodeo
					ventasR2 + ", " + // ventas
					transferidoR2 + ", " +
					saldoR1 + ", " + // saldo
					existenciaFinalR2 + ", " + // existencia inicial es la exi final del anterior
					(existenciaFinalR2 + saldoR2) + // existencia final mas saldo
				")");

				existenciaFinalR2 = existenciaFinalR2 + saldoR2;
				
				transferidoR2 = 0;
				saldoR2 = 0;

				System.out.println("/************************************************************************/");
				
				// RODEO 3
				i += 1;

				System.out.println("insert into movimientosrodeos values(" + i + ", " + // idMovimiento
					entradasR3 + ", " + // nacimientos
					muertesR3 + ", " + // muertes
					0 + ", " + // abortos				
					salidasR3 + ", " + // transferencia descarte
					transfR3 + ", " + // transferencia rodeo
					rodeoATransf3 + 
				")");

				System.out.println("insert into movimientosporrodeo values(" + 3 + ", " + // idRodeo
					i + ", " + // idMovimiento
					i + ", " + // idMovimientoPorRodeo
					fechas.get(j) + // fecha
				")");

				System.out.println("insert into rodeosdiarios values(" + i + ", " + // idMovimientoPorRodeo
					ventasR3 + ", " + // ventas
					transferidoR3 + ", " +
					saldoR3 + ", " + // saldo
					existenciaFinalR3 + ", " + // existencia inicial es la exi final del anterior
					(existenciaFinalR3 + saldoR3) + // existencia final mas saldo
				")");

				existenciaFinalR3 = existenciaFinalR3 + saldoR3;
				
				transferidoR3 = 0;
				saldoR3 = 0;

				System.out.println("/************************************************************************/");

				
				// RODEO 4
				i += 1;

				System.out.println("insert into movimientosrodeos values(" + i + ", " + // idMovimiento
					entradasR4 + ", " + // nacimientos
					muertesR4 + ", " + // muertes
					0 + ", " + // abortos
					salidasR4 + ", " + // transferencia descarte
					transfR4 + ", " + // transferencia rodeo
					rodeoATransf4 + 
				")");

				System.out.println("insert into movimientosporrodeo values(" + 4 + ", " + // idRodeo
					i + ", " + // idMovimiento
					i + ", " + // idMovimientoPorRodeo
					fechas.get(j) + // fecha
				")");

				System.out.println("insert into rodeosdiarios values(" + i + ", " + // idMovimientoPorRodeo
					ventasR4 + ", " + // ventas
					transferidoR4 + ", " +
					saldoR4 + ", " + // saldo
					existenciaFinalR4 + ", " + // existencia inicial es la exi final del anterior
					(existenciaFinalR4 + saldoR4) + // existencia final mas saldo
				")");

				existenciaFinalR4 = existenciaFinalR4 + saldoR4;
				
				transferidoR4 = 0;
				saldoR4 = 0;

				System.out.println("/************************************************************************/");
				
				i += 1;
				j += 1;
			
			}
		}
	
}
